package com.ruoyi.iot.domain.entity;

import io.swagger.v3.oas.annotations.media.Schema;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import lombok.Data;

/**
 * 电气统计窗口实体
 */
@Data
@Schema(description = "设备电气窗口聚合结果")
public class DeviceElectricalWindow {

    /** 主键ID */
    @Schema(description = "自增主键")
    private Long id;

    /** 设备编号 */
    @Schema(description = "设备编号")
    private String deviceId;

    /** 窗口开始时间 */
    @Schema(description = "聚合窗口开始时间")
    private LocalDateTime windowStart;

    /** 窗口结束时间 */
    @Schema(description = "聚合窗口结束时间")
    private LocalDateTime windowEnd;

    /** 聚合粒度(分钟) */
    @Schema(description = "聚合粒度(分钟)")
    private Integer granularityMinutes;

    /** 样本数量 */
    @Schema(description = "样本数量")
    private Integer sampleCount;

    /** A相电流平均值 */
    @Schema(description = "A相电流平均值")
    private BigDecimal avgIa;

    /** B相电流平均值 */
    @Schema(description = "B相电流平均值")
    private BigDecimal avgIb;

    /** C相电流平均值 */
    @Schema(description = "C相电流平均值")
    private BigDecimal avgIc;

    /** A相电流最大值 */
    @Schema(description = "A相电流最大值")
    private BigDecimal maxIa;

    /** B相电流最大值 */
    @Schema(description = "B相电流最大值")
    private BigDecimal maxIb;

    /** C相电流最大值 */
    @Schema(description = "C相电流最大值")
    private BigDecimal maxIc;

    /** Uab电压平均值 */
    @Schema(description = "Uab电压平均值")
    private BigDecimal avgUab;

    /** Ubc电压平均值 */
    @Schema(description = "Ubc电压平均值")
    private BigDecimal avgUbc;

    /** Uca电压平均值 */
    @Schema(description = "Uca电压平均值")
    private BigDecimal avgUca;

    /** 功率因数平均值 */
    @Schema(description = "功率因数平均值")
    private BigDecimal avgPowerfactor;

    /** 有功能量(kWh) */
    @Schema(description = "有功能量(kWh)")
    private BigDecimal energyKwh;

    /** 无功能量(kVarh) */
    @Schema(description = "无功能量(kVarh)")
    private BigDecimal reactiveEnergy;

    /** 有效数据占比 */
    @Schema(description = "有效数据占比")
    private BigDecimal qualityRate;

    /** 创建时间 */
    @Schema(description = "创建时间")
    private LocalDateTime createdAt;

    /** 更新时间 */
    @Schema(description = "更新时间")
    private LocalDateTime updatedAt;
}
